﻿//using System;
//using System.Collections.Generic;
//using System.IdentityModel.Tokens.Jwt;
//using System.Linq;
//using System.Security;
//using System.Text;
//using System.Threading.Tasks;
//using AutoMapper;
//using Microsoft.AspNetCore.Authorization;
//using Microsoft.AspNetCore.Mvc;
//using Microsoft.IdentityModel.Tokens;
//using Microsoft.IdentityModel.Tokens;
//using System.IdentityModel.Tokens.Jwt;
//using System.Text;
//using WMS.Common;
//using WMS.Common.Dtos;

////// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

//namespace Hotel.Api.Controllers
//{
//    [Route("api/[controller]/[action]")]
//    [Authorize]
//    public class PermissionsController : Controller
//    {
//        ILogger<PermissionsController> logger;

//        public PermissionsController(ILogger<PermissionsController> logger)
//        {
//            this.logger = logger;
//        }

//        //        /// <summary>
//        //        /// 返回角色列表
//        //        /// </summary>
//        //        /// <returns></returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<List<Role>>> GetRolesList()
//        //        {
//        //            try
//        //            {
//        //                var list = await pSerice.GetRolesList();
//        //                var apiResult = new ApiResult<List<Role>>("Ok")
//        //                {
//        //                    code = StatusCodeEnum.Ok,
//        //                    data = list,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //                return apiResult;

//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                logger.LogError(ex.Message);
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //        /// 增加修改角色
//        //        /// </summary>
//        //        /// <param name="t">角色实体</param>
//        //        /// <returns>受影响的行数</returns>
//        //        [HttpPost]
//        //        public async Task<ApiResult<int>> AddRole([FromBody] Role t, string ids)
//        //        {
//        //            try
//        //            {
//        //                var idsList = ids.Split(",").Select(x => Convert.ToInt32(x)).ToList();
//        //                var res = 0;
//        //                if (t.Id == 0)
//        //                {
//        //                    res = await pSerice.AddRole(t, idsList);
//        //                }
//        //                else
//        //                {
//        //                    res = await pSerice.UpdateRoleOk(t, idsList);
//        //                }


//        //                var result = new ApiResult<int>("Ok")
//        //                {
//        //                    data = res,
//        //                    code = StatusCodeEnum.Ok,
//        //                    isSuc = true,
//        //                    msg = ""
//        //                };
//        //                return result;
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//        //        /// <summary>
//        //        /// 修改角色
//        //        /// </summary>
//        //        /// <param name="t">角色实体</param>
//        //        /// <returns>受影响的行数</returns>
//        //        //[HttpPut]
//        //        //public async Task<ApiResult<int>> UpdateRoleOk([FromBody] Role t,string ids)
//        //        //{
//        //        //    try
//        //        //    {
//        //        //        var res = await pSerice.UpdateRoleOk(t,ids);
//        //        //        var result = new ApiResult<int>("Ok")
//        //        //        {
//        //        //            data = res,
//        //        //            msg = "",
//        //        //            isSuc = true,
//        //        //            code = StatusCodeEnum.Ok
//        //        //        };
//        //        //        return result;
//        //        //    }
//        //        //    catch (Exception ex)
//        //        //    {
//        //        //        throw ex;
//        //        //    }
//        //        //}
//        //        /// <summary>
//        //        /// 根据Id获取角色
//        //        /// </summary>
//        //        /// <param name="id">角色Id</param>
//        //        /// <returns>角色实体</returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<Role>> GetRoleItem(int id)
//        //        {
//        //            try
//        //            {
//        //                var res = await pSerice.GetRoleItem(id);
//        //                var result = new ApiResult<Role>("Ok")
//        //                {
//        //                    data = res,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //                return result;
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //		/// 添加用户  添加用户的同时添加用户的角色信息 用到事务  不能传递两个复杂类型，要么传递dto，要么一个复杂类型一个基本类型
//        //        /// 要么都成功  要么都失败
//        //		/// </summary>
//        //		/// <param name="user"></param>
//        //		/// <param name="roleIds"></param>
//        //		/// <returns></returns>
//        //        [HttpPost]
//        //        public async Task<ApiResult<int>> UserAdd([FromBody] UserInfo user, string roleIds)
//        //        {
//        //            try
//        //            {
//        //                List<int> idList = roleIds.Split(",").Select(id => int.Parse(id)).ToList();


//        //                var res = 0;

//        //                if (user.UserId == 0)
//        //                {
//        //                    res = await pSerice.UserAdd(user, idList);
//        //                }
//        //                else
//        //                {
//        //                    res = await pSerice.UserUpdate(user, idList);
//        //                }

//        //                var result = new ApiResult<int>("Ok")
//        //                {
//        //                    data = res,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //                return result;
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//        //        /// <summary>
//        //        /// 获取用户列表
//        //        /// </summary>
//        //        /// <param name="pageIndex">页码</param>
//        //        /// <param name="pageSize">页容量</param>
//        //        /// <param name="loginName">登陆名称</param>
//        //        /// <param name="userName">真实姓名</param>
//        //        /// <returns>获取用户列表</returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<PagingResult<List<UserInfoResponseDTO>>>> GetUserInfoList(int pageIndex = 1, int pageSize = 2, string? loginName = "", string? userName = "", string? gender = "", string? beginDate = "", string? endDate = "")
//        //        {

//        //            try
//        //            {
//        //                var list = await pSerice.GetUserInfoList(pageIndex, pageSize, loginName, userName, gender, beginDate, endDate);
//        //                var apiResult = new ApiResult<PagingResult<List<UserInfoResponseDTO>>>("Ok")
//        //                {
//        //                    data = list,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //                return apiResult;
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //        /// 根据用户Id查询
//        //        /// </summary>
//        //        /// <param name="userId">用户Id</param>
//        //        /// <returns>用户信息</returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<UserInfo>> GetUserInfo(int userId)
//        //        {
//        //            try
//        //            {
//        //                var user = await pSerice.GetUserInfo(userId);
//        //                return new ApiResult<UserInfo>("Ok")
//        //                {
//        //                    data = user,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //        /// 根据用户id获取角色列表
//        //        /// </summary>
//        //        /// <param name="userId"></param>
//        //        /// <returns></returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<List<int>>> GetUserRoleList(int userId)
//        //        {
//        //            try
//        //            {
//        //                var list = await pSerice.GetUserRoleList(userId);
//        //                return new ApiResult<List<int>>("Ok")
//        //                {
//        //                    data = list,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //        ///修改用户  修改用户的同时修改用户的角色信息
//        //        /// </summary>
//        //        /// <param name="user"></param>
//        //        /// <param name="roleIds"></param>
//        //        /// <returns></returns>
//        //        [HttpPut]
//        //        public async Task<ApiResult<int>> UserUpdate(UserInfo user, string roleIds)
//        //        {
//        //            try
//        //            {
//        //                List<int> roleList = roleIds.Split(",").Select(c => int.Parse(c)).ToList();

//        //                var res = await pSerice.UserUpdate(user, roleList);

//        //                return new ApiResult<int>("Ok")
//        //                {
//        //                    data = res,
//        //                    code = StatusCodeEnum.Ok,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                //return 0;
//        //                throw ex;
//        //            }
//        //        }



//        //        /// <summary>
//        //        /// 根据角色Id获取对应的权限id列表--------------------------
//        //        /// </summary>
//        //        /// <param name="roleId">角色id</param>
//        //        /// <returns>权限列表</returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<List<int>>> GetPermissionIdList(int roleId)
//        //        {
//        //            try
//        //            {
//        //                var idList = await pSerice.GetPermissionIdList(roleId);
//        //                return new ApiResult<List<int>>("Ok")
//        //                {
//        //                    data = idList,
//        //                    code = StatusCodeEnum.Ok,
//        //                    isSuc = true,
//        //                    msg = ""
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                logger.LogError(ex, "获取角色对应的权限id列表时发生错误");
//        //                return new ApiResult<List<int>>("获取角色对应的权限id列表时发生错误")
//        //                {
//        //                    code = StatusCodeEnum.Fail,
//        //                    isSuc = false
//        //                };
//        //            }
//        //        }
//        //        /// <summary>
//        //        /// 根据角色Id删除角色信息
//        //        /// </summary>
//        //        /// <param name="id">角色id</param>
//        //        /// <returns>受影响的行数</returns>
//        //        [HttpDelete]
//        //        public async Task<ApiResult<int>> DelRole(int id)
//        //        {
//        //            try
//        //            {
//        //                var res = await pSerice.DelRole(id);
//        //                return new ApiResult<int>("Ok")
//        //                {
//        //                    code = StatusCodeEnum.Ok,
//        //                    data = res,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };

//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//        /// <summary>
//        /// 用户登陆
//        /// </summary>
//        /// <param name="userName">用户名</param>
//        /// <param name="userPwd">密码</param>
//        /// <returns>返回符合条件的数据</returns>
//        [HttpGet]
//        [AllowAnonymous]
//        public async Task<ApiResult<UserResponseDTO>> UserLogin(string loginName, string loginPwd)
//        {
//            try
//            {
//                var res = await pSerice.UserLogin(loginName, loginPwd);
//                if (res.msg == "登陆成功")
//                {
//                    //计算token值
//                    var token = CreateTokenString();
//                    res.data.Token = token;
//                }
//                return res;
//            }
//            catch (Exception ex)
//            {
//                throw ex;
//            }
//        }




//        /// <summary>
//        /// 生成 JWT Token（令牌）
//        /// </summary>
//        /// <returns></returns>
//        private string CreateTokenString()
//        {
//            //私钥
//            var secretByte = Encoding.UTF8.GetBytes("kdsfldsflkdslkflkdsflkdslfdslkflk");
//            // 非对称加密
//            var signingKey = new SymmetricSecurityKey(secretByte);
//            // 使用256 生成数字签名
//            var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
//            // 生成Token
//            var token = new JwtSecurityToken(
//                issuer: "BeiJingBW",
//                audience: "BeiJingBW",
//                expires: DateTime.Now.AddDays(1), // 一天后过期
//                signingCredentials: signingCredentials
//            );
//            // 生成token 字符串
//            var strToken = new JwtSecurityTokenHandler().WriteToken(token);
//            return strToken;
//        }
//        //        /// <summary>
//        //        /// 添加权限
//        //        /// </summary>
//        //        /// <param name="t">权限实体</param>
//        //        /// <returns>返回受影响的行数</returns>
//        //        [HttpPost]
//        //        public async Task<ApiResult<int>> AddPermission([FromBody] Permission t)
//        //        {
//        //            try
//        //            {
//        //                var res = 0;
//        //                if (t.Pid == 0)
//        //                {
//        //                    res = await pSerice.AddPermission(t);
//        //                }
//        //                else
//        //                {
//        //                    res = await pSerice.UpdatePermissionOk(t);
//        //                }


//        //                return new ApiResult<int>("Ok")
//        //                {
//        //                    code = StatusCodeEnum.Ok,
//        //                    data = res,
//        //                    isSuc = true,
//        //                    msg = ""
//        //                };

//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//        //        /// <summary>
//        //        /// 权限修改
//        //        /// </summary>
//        //        /// <param name="t">权限实体</param>
//        //        /// <returns>受影响的行数</returns>
//        //        //[HttpPut]
//        //        //public async Task<ApiResult<int>> UpdatePermission(Permission t)
//        //        //{
//        //        //    try
//        //        //    {
//        //        //        var res = await pSerice.UpdatePermission(t);
//        //        //        return new ApiResult<int>("Ok")
//        //        //        {
//        //        //            data = res,
//        //        //            code = StatusCodeEnum.Ok,
//        //        //            isSuc = true,
//        //        //            msg = ""
//        //        //        };
//        //        //    }
//        //        //    catch (Exception ex)
//        //        //    {
//        //        //        throw ex;
//        //        //    }
//        //        //}

//        //        /// <summary>
//        //        /// 获取权限某一项
//        //        /// </summary>
//        //        /// <param name="id">权限id</param>
//        //        /// <returns>权限项</returns>
//        //        [HttpGet]
//        //        public async Task<ApiResult<Permission>> GetPermissionItem(int id)
//        //        {
//        //            try
//        //            {
//        //                var res = await pSerice.GetPermissionItem(id);
//        //                return new ApiResult<Permission>("Ok")
//        //                {
//        //                    data = res,
//        //                    code = StatusCodeEnum.Ok,
//        //                    isSuc = true,
//        //                    msg = ""
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//        //        /// <summary>
//        //        /// 确认修改
//        //        /// </summary>
//        //        /// <param name="t">权限实体</param>
//        //        /// <returns>受影响的行数</returns>
//        //        [HttpPut]
//        //        public async Task<ApiResult<int>> UpdatePermissionOk(Permission t)
//        //        {
//        //            try
//        //            {
//        //                var res = await pSerice.UpdatePermissionOk(t);
//        //                return new ApiResult<int>("Ok")
//        //                {
//        //                    code = StatusCodeEnum.Ok,
//        //                    data = res,
//        //                    isSuc = true,
//        //                    msg = ""
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }

//        //        /// <summary>
//        //        /// 删除权限
//        //        /// </summary>
//        //        /// <param name="id">删除的ID</param>
//        //        /// <returns>受影响的行数</returns>
//        //        [HttpDelete]
//        //        public async Task<ApiResult<int>> DelPermissionItem(int id)
//        //        {
//        //            try
//        //            {
//        //                var res = await pSerice.DelPermissionItem(id);
//        //                return new ApiResult<int>("Ok")
//        //                {
//        //                    code = StatusCodeEnum.Ok,
//        //                    data = res,
//        //                    msg = "",
//        //                    isSuc = true
//        //                };
//        //            }
//        //            catch (Exception ex)
//        //            {
//        //                throw ex;
//        //            }
//        //        }
//    }
//}

